import java.util.List;

import org.hibernate.Session;

import ca.etsmtl.log660.configuration.SessionFactoryHelper;
import ca.etsmtl.log660.entity.Annonce;
import ca.etsmtl.log660.entity.Client;
import ca.etsmtl.log660.entity.Film;
import ca.etsmtl.log660.entity.FilmActeur;
import ca.etsmtl.log660.entity.Genre;
import ca.etsmtl.log660.entity.Inventaire;
import ca.etsmtl.log660.entity.Pays;
import ca.etsmtl.log660.entity.Personne;
import ca.etsmtl.log660.entity.Scenariste;

public class TestHibernate {

	public static void main(String[] args) {
		
		System.out.println();
		
		Session uneSession = SessionFactoryHelper.getSessionFactory().openSession();
		uneSession.beginTransaction();
		List<Personne> personnes = uneSession.createQuery("FROM Personne WHERE nom LIKE '%David%'").list();
		System.out.println(personnes.get(0).getNom());
		System.out.println("Nb de David dans PERSONNE : "+personnes.size());
		uneSession.getTransaction().commit();
		uneSession.close();
		
		System.out.println();
		
		uneSession = SessionFactoryHelper.getSessionFactory().openSession();
		uneSession.beginTransaction();
		List<Film> films = uneSession.createQuery("FROM Film").list();
		System.out.println(films.get(0).getTitre());
		String genresStr = "";
		for(Genre genre : films.get(0).getGenres()){
			genresStr += genre.getNom() + ";";
		}
		System.out.println("Genres : "+genresStr);
		System.out.println("Realisateur : " + films.get(0).getRealisateur().getNom());
		String scenars = "";
		for(Scenariste scenar : films.get(0).getScenaristes()){
			scenars += scenar.getNom() + ";";
		}
		System.out.println("Scenaristes : " + scenars);
		String paysss = "";
		for(Pays pays : films.get(0).getPays()){
			paysss += pays.getPays() + ";";
		}
		String annStr = "";
		for(Annonce ann : films.get(0).getAnnonces()){
			annStr += ann.getAnnonce() + ";";
		}
		System.out.println("Annonces : " + annStr);
		System.out.println("============\nActeurs\n============");
		for(FilmActeur act : films.get(0).getActeurs()){
			System.out.println(act.getActeur().getNom()+" : "+act.getPersonnage());
		}
		System.out.println("===============\nInventaires ("+films.get(0).getInventaires().size()+" copies)\n===============");
		for(Inventaire inv : films.get(0).getInventaires()){
			System.out.println(inv.getInventaireId()+" : "+inv.isDisponible());
		}
		
		System.out.println("*Nb de Films : "+films.size()+"*");
		uneSession.getTransaction().commit();
		uneSession.close();
		
		System.out.println();
		
		uneSession = SessionFactoryHelper.getSessionFactory().openSession();
		uneSession.beginTransaction();
		List<Client> clients = uneSession.createQuery("FROM Client").list();
		System.out.println(clients.get(0).getPrenom() + " " + clients.get(0).getNom());
		System.out.println("Nb de clients : "+clients.size());
		
	}

}
